package com.fqgj.sentry.policy.engine.eval
/**
 * Created by kennykong on 11/07/2017.
 */

/**
 * 分数计算
 * @param var
 * @param a1
 * @param a2
 * @return
 */
def calculateScore(var, a1, a2) {
    if (var == null) var = 0d
    def tabR = a1 + a2 * var
    return processNum(tabR)
}

/**
 * 权重分计算
 * @param var
 * @param a1
 * @param a2
 * @return
 */
def weightScore(var, a1, a2) {
   calculateScore(var, a1, a2)
}

/**
 * 保留2位小数Double
 * @param num
 * @return
 */
def processNum(num) {
    if (num == null) return null
    def rst = num.toBigDecimal()
    def rst1 = rst.setScale(2, BigDecimal.ROUND_HALF_UP)
    return rst1.toDouble()
}

/**
 * 对象比较
 * @param var
 * @param x
 * @return
 */
def objCompare(var, x) {
    return var.compareTo(x)
}

/**
 * 是否基本类型
 * @param x
 * @return
 */
def isPrime(x) {
    return x.getClass().isPrimitive()
}

/**
 * 大于等于
 * @param var
 * @param x
 * @return
 */
def gte(var, x) {
    if (var == null || x == null) {
        return false
    }
    if (!isPrime(var)) {
        def r = objCompare(var, x)
        return r >= 0
    }
    return var >= x
}

/**
 * 大于
 * @param var
 * @param x
 * @return
 */
def gt(var, x) {
    if (var == null || x == null) {
        return false
    }
    if (!isPrime(var)) {
        def r = objCompare(var, x)
        return r > 0
    }
    return var > x
}

/**
 * 小于等于
 * @param var
 * @param x
 * @return
 */
def lte(var, x) {
    if (var == null || x == null) {
        return false
    }
    if (!isPrime(var)) {
        def r = objCompare(var, x)
        return r <= 0
    }
    return var <= x
}

/**
 * 小于
 * @param var
 * @param x
 * @return
 */
def lt(var, x) {
    if (var == null || x == null) {
        return false
    }
    if (!isPrime(var)) {
        def r = objCompare(var, x)
        return r < 0
    }
    return var < x
}

/**
 * 等于
 * @param var
 * @param x
 * @return
 */
def eq(var, x) {
    if (var == null && x == null) {
        return true
    } else {
        if (var == null || x == null) {
            return false
        }
        if (!isPrime(var)) {
            def r = objCompare(var, x)
            return r == 0
        }
        return var == x
    }
}

/**
 * 不等于
 * @param var
 * @param x
 * @return
 */
def neq(var, x) {
    return !eq(var, x)
}

/**
 * 包含
 * @param var
 * @param x
 * @return
 */
def contains(var, x) {
    if (var == null) return false
    return var.contains(x)
}

/**
 * 不包含
 * @param var
 * @param x
 * @return
 */
def notContains(var, x) {
    return !(contains(var, x))
}

/**
 * 测试
 */
//print(void >= void)

//println(gte(new Integer(13),new Integer(13)))